# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
# Test initialize request parameters with rootUri
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootUri":"test:///workspace","capabilities":{},"trace":"off"}}
#      CHECK:  "id": 0,
# CHECK-NEXT:  "jsonrpc": "2.0",
# CHECK-NEXT:  "result": {
# CHECK-NEXT:    "capabilities": {
# CHECK-NEXT:      "astProvider": true,
# CHECK-NEXT:      "callHierarchyProvider": true,
# CHECK-NEXT:      "clangdInlayHintsProvider": true,
# CHECK-NEXT:      "codeActionProvider": true,
# CHECK-NEXT:      "compilationDatabase": {
# CHECK-NEXT:        "automaticReload": true
# CHECK-NEXT:      },
# CHECK-NEXT:      "completionProvider": {
# CHECK-NEXT:        "resolveProvider": false,
# CHECK-NEXT:        "triggerCharacters": [
# CHECK-NEXT:          ".",
# CHECK-NEXT:          "<",
# CHECK-NEXT:          ">",
# CHECK-NEXT:          ":",
# CHECK-NEXT:          "\"",
# CHECK-NEXT:          "/",
# CHECK-NEXT:          "*"
# CHECK-NEXT:        ]
# CHECK-NEXT:      },
# CHECK-NEXT:      "declarationProvider": true,
# CHECK-NEXT:      "definitionProvider": true,
# CHECK-NEXT:      "documentFormattingProvider": true,
# CHECK-NEXT:      "documentHighlightProvider": true,
# CHECK-NEXT:      "documentLinkProvider": {
# CHECK-NEXT:        "resolveProvider": false
# CHECK-NEXT:      }
# CHECK-NEXT:      "documentOnTypeFormattingProvider": {
# CHECK-NEXT:        "firstTriggerCharacter": "\n",
# CHECK-NEXT:        "moreTriggerCharacter": []
# CHECK-NEXT:      },
# CHECK-NEXT:      "documentRangeFormattingProvider": true,
# CHECK-NEXT:      "documentSymbolProvider": true,
# CHECK-NEXT:      "executeCommandProvider": {
# CHECK-NEXT:        "commands": [
# CHECK-NEXT:          "clangd.applyFix",
# CHECK-NEXT:          "clangd.applyTweak"
# CHECK-NEXT:        ]
# CHECK-NEXT:      },
# CHECK-NEXT:      "foldingRangeProvider": true,
# CHECK-NEXT:      "hoverProvider": true,
# CHECK-NEXT:      "implementationProvider": true,
# CHECK-NEXT:      "inlayHintProvider": true,
# CHECK-NEXT:      "memoryUsageProvider": true,
# CHECK-NEXT:      "referencesProvider": true,
# CHECK-NEXT:      "renameProvider": true,
# CHECK-NEXT:      "selectionRangeProvider": true,
# CHECK-NEXT:      "semanticTokensProvider": {
# CHECK-NEXT:        "full": {
# CHECK-NEXT:          "delta": true
# CHECK-NEXT:        },
# CHECK-NEXT:        "legend": {
# CHECK-NEXT:          "tokenModifiers": [
# CHECK-NEXT:            "declaration",
# CHECK-NEXT:            "definition",
# CHECK-NEXT:            "deprecated",
# CHECK-NEXT:            "deduced",
# CHECK-NEXT:            "readonly",
# CHECK-NEXT:            "static",
# CHECK-NEXT:            "abstract",
# CHECK-NEXT:            "virtual",
# CHECK-NEXT:            "dependentName",
# CHECK-NEXT:            "defaultLibrary",
# CHECK-NEXT:            "usedAsMutableReference",
# CHECK-NEXT:            "usedAsMutablePointer",
# CHECK-NEXT:            "constructorOrDestructor",
# CHECK-NEXT:            "userDefined",
# CHECK-NEXT:            "functionScope",
# CHECK-NEXT:            "classScope",
# CHECK-NEXT:            "fileScope",
# CHECK-NEXT:            "globalScope"
# CHECK-NEXT:          ],
# CHECK-NEXT:          "tokenTypes": [
# CHECK-NEXT:            "variable",
# CHECK:               ]
# CHECK-NEXT:        },
# CHECK-NEXT:        "range": false
# CHECK-NEXT:      },
# CHECK-NEXT:      "signatureHelpProvider": {
# CHECK-NEXT:        "triggerCharacters": [
# CHECK-NEXT:          "(",
# CHECK-NEXT:          ")",
# CHECK-NEXT:          "{",
# CHECK-NEXT:          "}",
# CHECK-NEXT:          "<",
# CHECK-NEXT:          ">"
# CHECK-NEXT:          ","
# CHECK-NEXT:        ]
# CHECK-NEXT:      },
# CHECK-NEXT:      "standardTypeHierarchyProvider": true,
# CHECK-NEXT:      "textDocumentSync": {
# CHECK-NEXT:        "change": 2,
# CHECK-NEXT:        "openClose": true,
# CHECK-NEXT:        "save": true
# CHECK-NEXT:      },
# CHECK-NEXT:      "typeDefinitionProvider": true,
# CHECK-NEXT:      "typeHierarchyProvider": true
# CHECK-NEXT:      "workspaceSymbolProvider": true
# CHECK-NEXT:    },
# CHECK-NEXT:    "serverInfo": {
# CHECK-NEXT:      "name": "clangd",
# CHECK-NEXT:      "version": "{{.*}}clangd version {{.*}}"
# CHECK-NEXT:    }
# CHECK-NEXT:  }
---
{"jsonrpc":"2.0","id":3,"method":"shutdown"}
#      CHECK:  "id": 3,
# CHECK-NEXT:  "jsonrpc": "2.0",
# CHECK-NEXT:  "result": null
---
{"jsonrpc":"2.0","method":"exit"}
